package com.softer.wxzj.service;

import com.github.pagehelper.PageInfo;
import com.softer.wxzj.common.entity.CommonResult;
import com.softer.wxzj.common.entity.Page;
import com.softer.wxzj.entity.BaseRegionInfo;
import com.softer.wxzj.entity.SysOperator;
import com.softer.wxzj.entity.SysRole;
import com.softer.wxzj.service.base.BaseService;

import java.util.List;
import java.util.Map;

/**
 * SysOperatorService class
 *
 * @author zcz
 * @date 2019/1/16
 */
public interface SysOperatorService extends BaseService<SysOperator> {
    /**
     * 密码重置
     *
     * @param id
     * @return
     */
    CommonResult resetPassword(String id);

    CommonResult resetCorpPassword(String id);

    String getZoneCode(String opesNo);

    /**
     * 开启或关闭用户
     *
     * @param id    用户Id
     * @param state 状态（1开启，0关闭）
     * @return 操作结果
     */
    CommonResult operate(String id, String state);

    /**
     * 密码修改
     *
     * @param newPassword
     * @param oldPassword
     * @return
     */
    CommonResult updatePassword(String newPassword, String oldPassword);

    /**
     * 根据用户名查询用户和角色信息
     *
     * @return
     */
    Map<String, String> getOperAndRole();

    /**
     * 模糊查询
     */
    PageInfo<SysOperator> fuzzySearch(Page page, String fuzzy);

    /**
     * 通过登陆账号企业id
     *
     * @return
     */
    String selectOperNoByCompanyId(String opeNo);

    /**
     * 根据企业id查询外网用户列表
     *
     * @param page
     * @param sysOperator
     * @return
     */
    PageInfo<SysOperator> getOutUserListByCompanyId(Page page, SysOperator sysOperator);

    /**
     * 根据企业类型查询外网角色列表
     *
     * @return
     */
    List<SysRole> getRoleListByCompanyType(String operNo);

    /**
     * 新增外网用户
     *
     * @param sysOperator
     * @return
     */
    CommonResult insertOutUser(SysOperator sysOperator);

    /**
     * 修改外网用户信息
     *
     * @param sysOperator
     * @return
     */
    CommonResult updateOutOper(SysOperator sysOperator);

    /**
     * 绑定/换绑加密狗
     *
     * @param sysOperator
     * @return
     */
    CommonResult bindUsbKey(SysOperator sysOperator, String type);

    /**
     * 根据登录账号查询用户信息
     *
     * @param operNo
     * @return
     */
    SysOperator getOperInfoByOperNo(String operNo);

    /**
     * 根据加密狗查询operList
     *
     * @param usbKey
     * @return
     */
    CommonResult getUsbKeyIsBind(String usbKey);
    /**
     *内网查询管辖区域内机构主账号列表
     * @return
     */
    PageInfo<SysOperator> getOrgMainAccount(Page page, SysOperator sysOperator);
    /**
     *     账号启用/停用 
     */
    CommonResult openOrCloseAccount(String operNo,String state);

    /**
     * 通过账号和状态查绑定的小区
     * @param type   类型
     * @param operNo 账号
     * @return
     */
    List<BaseRegionInfo> selectOperNoByRegion(String type, String operNo);
}
